package core.interfaces;



import core.exceptions.InvocationException;

/**
 * Interface that represents the core functionality of SISi. It contains the definition of the main methods.
 * 
 * @author Christian Stamber
 *
 */
public interface CoreInterface {
	
	/**
	 * Invokes a semantic web service by means of semantic ontology instances ({@link semanticInput}).
	 * @param semanticDescription The semantic description of the semantic web service. In terms of WSMO this description 
	 * is called "Goal".
	 * @param semanticInput The semantic input: semantic ontology instances
	 * @return The semantic output: semantic ontology instances
	 * @throws InvocationException
	 */
	public String invokeSemantically(String semanticDescription, String semanticInput);
	
	//public HashMap invokeSyntactically(String semanticDescription, HashMap syntacticInput);
	
	/**
	 * Invokes a semantic web service by means of syntactic input data in form of a SOAP message body ({@link soapBodyInput}).
	 * @param semanticDescription The semantic description of the semantic web service. In terms of WSMO this description 
	 * is called "Goal".
	 * @param soapBodyInput The syntactic input: SOAP message body
	 * @return The syntactic output: SOAP message body
	 * @throws InvocationException 
	 */
	public String invokeSyntactically(String semanticDescription, String soapBodyInput);
	
	public boolean decide(String semanticInput, String condition);
	
	public String map(String sourceGoal, String sourceInstance, String targetGoal, String targetInstance, String sourceInput);
	
	public String merge(String input1, String ontologyName1, String instanceName1, String input2, String ontologyName2, String instanceName2, String outputOntologyName);
}
